Reverse[{a, b, c, d}]

rev[s_List] := 
      If[s == {}, {}, Append[rev[Rest[s]], First[s]]]

rev[{}]
rev[{a, b, c}]

rev1[{}] := {}
rev1[s_List] := Append[rev1[Rest[s]], First[s]]

rev1[{}]
rev1[{a, b, c}]

?rev1

rev[{1, 2, 3, 4, 5, 6}]

tr = Trace[rev[{1, 2, 3, 4}], Rest]

reverse1[{}] = {};
reverse1[{sublist___, lastel_}] := 
      Prepend[reverse1[{sublist}], lastel]
reverse1[{1, 2, 3, 4, 5, 6, 7, 8, 9}]

reverse2[{}] = {};
reverse2[{firstel_, sublist___}] := 
      Append[reverse2[{sublist}], firstel]
reverse2[{1, 2, 3, 4, 5, 6, 7, 8, 9}]

reverse3[lst_List] := rev3[ lst, {} ]
rev3[ {}, revlist_ ] := revlist
rev3[ {firstel_, restlist___}, {revlistel___} ] := 
           rev3[ {restlist}, {firstel, revlistel} ]
reverse3[ {1,2,3,4,5,6,7,8,9} ]